package biz

import (
	"context"

	"github.com/go-kratos/kratos/v2/log"
)

// 定义了一个 Greeter struct，主要内容就是定义 Greeter 的字段
type Shop struct {
	Hello string
}

// 对 Greeter 定义操作接口 GreeterRepo
type ShopRepo interface {
	ShopSave(context.Context, *Shop) (*Shop, error)
	ShopUpdate(context.Context, *Shop) (*Shop, error)
	// FindByID(context.Context, int64) (*Greeter, error)
	// ListByHello(context.Context, string) ([]*Greeter, error)
	// ListAll(context.Context) ([]*Greeter, error)
}

// 操作加上日志
type ShopUsecase struct {
	repo ShopRepo
	log  *log.Helper
}

// 初始化 GreeterUsercase
func NewShopUsecase(repo ShopRepo, logger log.Logger) *ShopUsecase {
	return &ShopUsecase{
		repo: repo,
		log:  log.NewHelper(logger),
	}
}

// 对 Greeter 的真正操作，用到的方法都是上面 GreeterRepo 定义的
func (uc *ShopUsecase) CreateShop(ctx context.Context, g *Shop) (*Shop, error) {
	uc.log.WithContext(ctx).Infof("CreateGreeter: %v", g.Hello)
	return uc.repo.ShopSave(ctx, g)
}
